home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / gl_dev.idb / usr / include / gl / gl.h.z / gl.h
Encoding:
C/C++ Source or Header  |  1996-03-15  |  48.9 KB  |  1,547 lines

  1. #ifndef __GL_GL_H__
  2. #define __GL_GL_H__
  3. /**************************************************************************
  4.  *                                      *
  5.  *          Copyright (C) 1984, Silicon Graphics, Inc.          *
  6.  *                                      *
  7.  *  These coded instructions, statements, and computer programs  contain  *
  8.  *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
  9.  *  are protected by Federal copyright law.  They  may  not be disclosed  *
  10.  *  to  third  parties  or copied or duplicated in any form, in whole or  *
  11.  *  in part, without the prior written consent of Silicon Graphics, Inc.  *
  12.  *                                      *
  13.  **************************************************************************/
  14.  
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18. /*
  19.  * Workarounds for collisions with X header files.  gl.h contains
  20.  * two copies of this, once to define and once to undef
  21.  */
  22.  
  23. #ifdef _GL_UNDEF_TYPES
  24.  
  25. /* this is the second time, remove my ugliness */
  26. #undef String
  27. #undef Boolean
  28. #undef Object
  29.  
  30. #else
  31.  
  32. /* this is the first time, create the ugliness */
  33. #ifdef _XtIntrinsic_h
  34. #define String GL_String
  35. #define Boolean GL_Boolean
  36. #endif
  37.  
  38. #ifdef _XtObject_h
  39. #define Object GL_Object
  40. #endif
  41.  
  42. #define _GL_UNDEF_TYPES
  43.  
  44. #endif
  45.  
  46. /* Graphics Libary constants */
  47.  
  48. #ifndef    NULL
  49. #define NULL            0
  50. #endif
  51.  
  52. #ifndef    FALSE
  53. #define FALSE            0
  54. #endif
  55.  
  56. #ifndef    TRUE
  57. #define TRUE            1
  58. #endif
  59.  
  60.  
  61. /* various hardware/software limits */
  62. #define ATTRIBSTACKDEPTH    10
  63. #define VPSTACKDEPTH        8
  64. #define MATRIXSTACKDEPTH    32
  65. #define NAMESTACKDEPTH        1025
  66.  
  67. /* special pre-defined tags */
  68. #define STARTTAG        -2
  69. #define ENDTAG            -3
  70.  
  71. /* names for colors in color map loaded by greset */
  72. #define BLACK            0
  73. #define RED            1
  74. #define GREEN            2
  75. #define YELLOW            3
  76. #define BLUE            4
  77. #define MAGENTA            5
  78. #define CYAN            6
  79. #define WHITE            7
  80.  
  81. /* popup colors */
  82. #define PUP_CLEAR        0
  83. #define PUP_COLOR        1
  84. #define PUP_BLACK        2
  85. #define PUP_WHITE        3
  86.  
  87. /* defines for drawmode and mswapbuffers*/
  88. #define NORMALDRAW        0x010
  89. #define PUPDRAW            0x020
  90. #define OVERDRAW        0x040
  91. #define UNDERDRAW        0x080
  92. #define CURSORDRAW        0x100
  93. #define DUALDRAW        0x200    /* obselete skywriter only */
  94. #define GANGDRAW        0x200    /* not available on skywriter */
  95. #define HYPER0            0x10000
  96. #define HYPER1            0x20000
  97. #define HYPER2            0x40000
  98.  
  99. /* defines for defpattern */
  100. #define PATTERN_16        16
  101. #define PATTERN_32        32
  102. #define PATTERN_64        64
  103.  
  104. #define PATTERN_16_SIZE        16
  105. #define PATTERN_32_SIZE        64
  106. #define PATTERN_64_SIZE        256
  107.  
  108. /* defines for readsource */
  109. #define SRC_NULL        -1
  110. #define SRC_AUTO        0
  111. #define SRC_FRONT        1
  112. #define SRC_FRONTLEFT         1
  113. #define SRC_BACK        2
  114. #define SRC_BACKLEFT         2
  115. #define SRC_ZBUFFER        3
  116. #define SRC_PUP            4
  117. #define SRC_OVER        5
  118. #define SRC_UNDER        6
  119. #define SRC_FRAMEGRABBER     7
  120. #define SRC_FRONTRIGHT         8
  121. #define SRC_BACKRIGHT         9
  122. #define SRC_ILBUFFER_1        1000
  123. #define SRC_ILBUFFER_2        1001
  124. #define SRC_ILBUFFER_3        1002
  125. #define SRC_ILBUFFER_4        1003
  126. #define SRC_ILBUFFER_5        1004
  127. #define SRC_ILBUFFER_6        1005
  128. #define SRC_ILBUFFER_7        1006
  129. #define SRC_ILBUFFER_8        1007
  130. #define SRC_ILBUFFER_9        1008
  131. #define SRC_ILBUFFER_10        1009
  132. #define SRC_ILBUFFER_11        1010
  133. #define SRC_ILBUFFER_12        1011
  134. #define SRC_ILBUFFER_13        1012
  135. #define SRC_ILBUFFER_14        1013
  136. #define SRC_ILBUFFER_15        1014
  137. #define SRC_ILBUFFER_16        1015
  138.  
  139. /* minmax */
  140. #define MINMAX_ENABLE           0
  141. #define MINMAX_DISABLE          1
  142. #define MINMAX_INIT             2
  143.  
  144. /* histogram */
  145. #define HIST_ENABLE        0
  146. #define HIST_DISABLE        1
  147. #define HIST_CLEAR        2
  148.  
  149. /* defines for readcomponent */
  150. #define RC_ABGR            4
  151. #define RC_ALPHA        0
  152. #define RC_BLUE            1
  153. #define RC_GREEN        2
  154. #define RC_RED            3
  155.  
  156. /* defines for blendfunction */
  157. #define BF_ZERO            0
  158. #define BF_ONE            1
  159. #define BF_DC            2
  160. #define BF_SC            2
  161. #define BF_MDC            3
  162. #define BF_MSC            3
  163. #define BF_SA            4
  164. #define BF_MSA            5
  165. #define BF_DA            6
  166. #define BF_MDA            7
  167. #define BF_MIN_SA_MDA        8
  168. #define BF_CA            9
  169. #define BF_MCA            10
  170. #define BF_CC            11
  171. #define BF_MCC            12
  172. #define BF_MIN            13
  173. #define BF_MAX            14
  174.  
  175. /* defines for afunction */
  176. #define AF_NEVER            0
  177. #define AF_LESS             1
  178. #define AF_EQUAL            2
  179. #define AF_LEQUAL           3
  180. #define AF_GREATER          4
  181. #define AF_NOTEQUAL         5
  182. #define AF_GEQUAL           6
  183. #define AF_ALWAYS           7
  184.  
  185. /* defines for zfunction */
  186. #define ZF_NEVER        0
  187. #define ZF_LESS            1
  188. #define ZF_EQUAL        2
  189. #define ZF_LEQUAL        3
  190. #define ZF_GREATER        4
  191. #define ZF_NOTEQUAL        5
  192. #define ZF_GEQUAL        6
  193. #define ZF_ALWAYS        7
  194.  
  195. /* defines for zsource */
  196. #define ZSRC_DEPTH        0
  197. #define ZSRC_COLOR        1
  198.  
  199. /* defines for pntsmooth */
  200. #define SMP_OFF            0x0
  201. #define SMP_ON            0x1
  202. #define SMP_SMOOTHER        0x2
  203.  
  204. /* defines for linesmooth */
  205. #define SML_OFF            0x0
  206. #define SML_ON            0x1
  207. #define SML_SMOOTHER        0x2
  208. #define SML_END_CORRECT        0x4
  209.  
  210. /* defines for polysmooth, NOTE, these must be decimal to allow
  211.  * macros in STAPUFT pe ucode (modes.m) to build
  212.  */
  213. #define PYSM_OFF                0
  214. #define PYSM_ON                 1
  215. #define PYSM_SHRINK             2
  216.  
  217. /* defines for msalpha */
  218. #define MSA_MASK        0x0
  219. #define MSA_MASK_ONE        0x1
  220. #define MSA_ALPHA        0x2
  221.  
  222. /* defines for mssample */
  223. #define MSS_POINT        0x0
  224. #define MSS_AREA        0x1
  225. #define MSS_CENTER_POINT    0x2
  226.  
  227. /* defines for mspattern */
  228. #define MSP_DEFAULT        0x0
  229. #define MSP_2PASS_0        0x1
  230. #define MSP_2PASS_1        0x2
  231. #define MSP_4PASS_0        0x3
  232. #define MSP_4PASS_1        0x4
  233. #define MSP_4PASS_2        0x5
  234. #define MSP_4PASS_3        0x6
  235.  
  236. /* dither modes    */
  237. #define DT_OFF            0
  238. #define DT_ON            1
  239.  
  240. /* defines for setpup */
  241. #define PUP_NONE        0
  242. #define PUP_GREY        0x1
  243. #define PUP_BOX            0x2
  244. #define PUP_CHECK        0x4
  245.  
  246. /* defines for glcompat */
  247. #define GLC_OLDPOLYGON        0
  248. #define GLC_ZRANGEMAP        1
  249. #define GLC_MQUEUERATE        2
  250. #define GLC_SOFTATTACH        3
  251. #define GLC_MANAGEBG        4
  252. #define GLC_SLOWMAPCOLORS    5
  253. #define GLC_INPUTCHANGEBUG    6
  254. #define GLC_NOBORDERBUG        7
  255. #define GLC_SET_VSYNC        8
  256. #define GLC_GET_VSYNC        9
  257. #define GLC_VSYNC_SLEEP        10
  258. #define GLC_FORCECIMAP        11
  259. #define GLC_TABLETSCALE        12
  260. #define GLC_NODESTALPHA        13
  261. #define GLC_ILCMD        1008
  262. #define GLC_IL_READCOMPONENT    0
  263. #define GLC_IL_RECTZOOMOFF    1
  264. #define GLC_IL_CONVOLVE        2
  265. #define GLC_IL_LRECTPROC    3
  266. #define GLC_IL_HISTOGRAM    4
  267. #define GLC_IL_GETHISTOGRAM    5
  268. #define GLC_IL_MINMAX        6
  269. #define GLC_IL_GETMINMAX    7
  270. #define GLC_IL_PIXELMAP        8
  271. #define GLC_IL_PIXELTRANSFER    9
  272. #define GLC_IL_ILBUFFER        0xa
  273. #define GLC_IL_ILDRAW        0xb
  274. #define GLC_IL_SUBTEXLOAD    0xc
  275. #define GLC_IL_LEFTBUFFER    0xd
  276. #define GLC_IL_RIGHTBUFFER    0xe
  277. #define GLC_IL_STEREOBUFFER    0xf
  278. #define GLC_IL_MONOBUFFER    0x10
  279. #define GLC_IL_FBSUBTEXLOAD    0x11
  280. #define GLC_IL_ISTEXLOADED    0x12
  281. #define GLC_IL_BLENDCOLOR    0x13
  282.  
  283. /* value for GLC_MQUEUERATE which is compatible with 3.3 */
  284. #define GLC_COMPATRATE        15
  285. /* value for GLC_MQUEUERATE which causes maximum compression */
  286. #define GLC_CMPRESS        1
  287.  
  288. /* defines for curstype */
  289. #define C16X1            0
  290. #define C16X2            1
  291. #define C32X1            2
  292. #define C32X2            3
  293. #define CCROSS            4
  294.  
  295. /* defines for shademodel */
  296. #define FLAT            0    /* For compatibility */
  297. #define GOURAUD            1    /* For compatibility */
  298.  
  299. /* defines for logicop */
  300. #define LO_ZERO            0x0
  301. #define LO_AND            0x1
  302. #define LO_ANDR            0x2
  303. #define LO_SRC            0x3
  304. #define LO_ANDI            0x4
  305. #define LO_DST            0x5
  306. #define LO_XOR            0x6
  307. #define LO_OR            0x7
  308. #define LO_NOR            0x8
  309. #define LO_XNOR            0x9
  310. #define LO_NDST            0xa
  311. #define LO_ORR            0xb
  312. #define LO_NSRC            0xc
  313. #define LO_ORI            0xd
  314. #define LO_NAND            0xe
  315. #define LO_ONE            0xf
  316.  
  317. /* define for scrnselect */
  318. #define INFOCUSSCRN        -2
  319.  
  320. /* defines for stencil */
  321. #define ST_KEEP            0
  322. #define ST_ZERO            1
  323. #define ST_REPLACE        2
  324. #define ST_INCR            3
  325. #define ST_DECR            4
  326. #define ST_INVERT        5
  327. #define SF_NEVER        0
  328. #define SF_LESS            1
  329. #define SF_EQUAL        2
  330. #define SF_LEQUAL        3
  331. #define SF_GREATER        4
  332. #define SF_NOTEQUAL        5
  333. #define SF_GEQUAL        6
  334. #define SF_ALWAYS        7
  335.  
  336. /* defines for scrsubdivide */
  337. #define SS_OFF            0
  338. #define SS_DEPTH        1
  339.  
  340. /* defines for polymode */
  341. #define PYM_FILL        1
  342. #define PYM_POINT        2
  343. #define PYM_LINE        3
  344. #define PYM_HOLLOW        4
  345. #define PYM_LINE_FAST        5
  346.  
  347. /* defines for fogvertex */
  348. #define FG_OFF            0
  349. #define FG_ON            1
  350. #define FG_DEFINE        2
  351. #define FG_VTX_EXP        2 /* aka FG_DEFINE*/
  352. #define FG_VTX_LIN        3
  353. #define FG_PIX_EXP        4
  354. #define FG_PIX_LIN        5
  355. #define FG_VTX_EXP2        6 
  356. #define FG_PIX_EXP2        7
  357.  
  358. /* defines for pixmode */
  359. #define PM_SHIFT        0
  360. #define PM_EXPAND        1
  361. #define PM_C0            2
  362. #define PM_C1            3
  363. #define PM_ADD24        4
  364. #define PM_SIZE            5
  365. #define PM_OFFSET        6
  366. #define PM_STRIDE        7
  367. #define PM_TTOB            8
  368. #define PM_RTOL            9
  369. #define PM_ZDATA        10
  370. #define PM_WARP            11
  371. #define PM_RDX            12
  372. #define PM_RDY            13
  373. #define PM_CDX            14
  374. #define PM_CDY            15
  375. #define PM_XSTART        16
  376. #define PM_YSTART        17
  377. #define PM_VO1            1000    /* internal use only */
  378.  
  379. /* defines for VENICE float path pixels/texels */
  380. #define PM_INPUT_FORMAT        11
  381. #define PM_INPUT_TYPE        12
  382. #define PM_OUTPUT_FORMAT    13
  383. #define PM_OUTPUT_TYPE        14
  384. #define PM_ABGR            0
  385. #define PM_BGR            1
  386. #define PM_RGBA            2
  387. #define PM_RGB            3
  388. #define PM_LUMINANCE        4
  389. #define PM_LUMINANCEA        5
  390. #define PM_ALPHA        6
  391. #define PM_COLOR_INDEX        7
  392. #define PM_STENCIL_INDEX    8
  393. #define PM_DEPTH        9
  394. #define PM_RED            10
  395. #define PM_GREEN        11
  396. #define PM_BLUE            12
  397.  
  398.  
  399. #define PM_BITMAP        0
  400. #define PM_BYTE            1
  401. #define PM_UNSIGNED_BYTE    2
  402. #define PM_SHORT_12        3
  403. #define PM_UNSIGNED_SHORT_12    4
  404. #define PM_SHORT        5
  405. #define PM_UNSIGNED_SHORT    6
  406. #define PM_INT            7
  407. #define PM_UNSIGNED_INT        8
  408. #define PM_FLOAT        9
  409.  
  410. /* defines for convolve */
  411. #define CV_OFF            0
  412. #define CV_GENERAL        1
  413. #define CV_SEPARABLE        2
  414. #define CV_REDUCE        1
  415.  
  416. /* defines for pixelmap */
  417. #define MAP_I_TO_I        0
  418. #define MAP_I_TO_R        1
  419. #define MAP_I_TO_G        2
  420. #define MAP_I_TO_B        3
  421. #define MAP_I_TO_A        4
  422. #define MAP_R_TO_R        5
  423. #define MAP_G_TO_G        6
  424. #define MAP_B_TO_B        7
  425. #define MAP_A_TO_A        8
  426.  
  427. /* defines for pixeltransfer */
  428. #define PT_MAP_COLOR        0
  429. #define PT_MAP_DISABLE        0
  430. #define PT_MAP_CLAMP        1
  431. #define PT_MAP_ENABLE        2
  432.  
  433. #define PT_RED_SCALE        1
  434. #define PT_RED_BIAS        2
  435. #define PT_GREEN_SCALE        3
  436. #define PT_GREEN_BIAS        4
  437. #define PT_BLUE_SCALE        5
  438. #define PT_BLUE_BIAS        6
  439. #define PT_ALPHA_SCALE        7
  440. #define PT_ALPHA_BIAS        8
  441.  
  442. /* defines for nmode */
  443. #define NAUTO            0
  444. #define NNORMALIZE        1
  445.  
  446. /* defines for acbuf */
  447. #define AC_CLEAR                0
  448. #define AC_ACCUMULATE           1
  449. #define AC_CLEAR_ACCUMULATE     2
  450. #define AC_RETURN               3
  451. #define AC_MULT                 4
  452. #define AC_ADD                  5
  453.  
  454. /* defines for clipplane */
  455. #define CP_OFF                  0
  456. #define CP_ON                   1
  457. #define CP_DEFINE               2
  458.  
  459. /* defines for scrbox */
  460. #define SB_RESET                0
  461. #define SB_TRACK                1
  462. #define SB_HOLD                 2
  463.  
  464.  
  465. /* defines for readdisplay */
  466. #define RD_FREEZE        0x00000001
  467. #define RD_ALPHAONE        0x00000002
  468. #define RD_IGNORE_UNDERLAY    0x00000004
  469. #define RD_IGNORE_OVERLAY    0x00000008
  470. #define RD_IGNORE_PUP        0x00000010
  471. #define RD_OFFSCREEN        0x00000020
  472.  
  473. /* defines for getgconfig */
  474. #define GC_BITS_CMODE        0
  475. #define GC_BITS_RED        1
  476. #define GC_BITS_GREEN        2
  477. #define GC_BITS_BLUE        3
  478. #define GC_BITS_ALPHA        4
  479. #define GC_BITS_ZBUFFER        5
  480. #define GC_ZMIN            6
  481. #define GC_ZMAX            7
  482. #define GC_BITS_STENCIL        8
  483. #define GC_BITS_ACBUF        9
  484. #define GC_MS_SAMPLES        10
  485. #define GC_BITS_MS_ZBUFFER    11
  486. #define GC_MS_ZMIN        12
  487. #define GC_MS_ZMAX        13
  488. #define GC_BITS_MS_STENCIL    14
  489. #define GC_STEREO        15
  490. #define GC_DOUBLE        16
  491.  
  492.  
  493. /* 
  494.  * START defines for getgdesc 
  495.  */
  496.  
  497. #define GD_XPMAX        0
  498. #define GD_YPMAX        1
  499. #define GD_XMMAX        2
  500. #define GD_YMMAX        3
  501. #define GD_ZMIN            4
  502. #define GD_ZMAX            5
  503. #define GD_BITS_NORM_SNG_RED    6
  504. #define GD_BITS_NORM_SNG_GREEN    7
  505. #define GD_BITS_NORM_SNG_BLUE    8
  506. #define GD_BITS_NORM_DBL_RED    9
  507. #define GD_BITS_NORM_DBL_GREEN    10
  508. #define GD_BITS_NORM_DBL_BLUE    11
  509. #define GD_BITS_NORM_SNG_CMODE    12
  510. #define GD_BITS_NORM_DBL_CMODE    13
  511. #define GD_BITS_NORM_SNG_MMAP    14
  512. #define GD_BITS_NORM_DBL_MMAP    15
  513. #define GD_BITS_NORM_ZBUFFER    16
  514. #define GD_BITS_OVER_SNG_CMODE    17
  515. #define GD_BITS_UNDR_SNG_CMODE    18
  516. #define GD_BITS_PUP_SNG_CMODE    19
  517. #define GD_BITS_NORM_SNG_ALPHA    21 
  518. #define GD_BITS_NORM_DBL_ALPHA    22
  519. #define GD_BITS_CURSOR        23
  520. #define GD_OVERUNDER_SHARED    24
  521. #define GD_BLEND        25
  522. #define GD_CIFRACT        26
  523. #define GD_CROSSHAIR_CINDEX    27
  524. #define GD_DITHER        28
  525. #define GD_LINESMOOTH_CMODE    30
  526. #define GD_LINESMOOTH_RGB    31
  527. #define GD_LOGICOP        33
  528. #define GD_NSCRNS        35
  529. #define GD_NURBS_ORDER        36
  530. #define GD_NBLINKS        37
  531. #define GD_NVERTEX_POLY        39
  532. #define GD_PATSIZE_64        40
  533. #define GD_PNTSMOOTH_CMODE    41
  534. #define GD_PNTSMOOTH_RGB    42
  535. #define GD_PUP_TO_OVERUNDER    43
  536. #define GD_READSOURCE        44
  537. #define GD_READSOURCE_ZBUFFER    48
  538. #define GD_STEREO        50
  539. #define GD_SUBPIXEL_LINE    51
  540. #define GD_SUBPIXEL_PNT        52
  541. #define GD_SUBPIXEL_POLY    53
  542. #define GD_TRIMCURVE_ORDER    54
  543. #define GD_WSYS            55
  544. #define GD_ZDRAW_GEOM        57
  545. #define GD_ZDRAW_PIXELS        58
  546. #define GD_SCRNTYPE        61
  547. #define GD_TEXTPORT        62
  548. #define GD_NMMAPS        63
  549. #define GD_FRAMEGRABBER        64
  550. #define GD_TIMERHZ        66
  551. #define GD_DBBOX        67
  552. #define GD_AFUNCTION        68
  553. #define GD_ALPHA_OVERUNDER    69
  554. #define GD_BITS_ACBUF        70
  555. #define GD_BITS_ACBUF_HW    71
  556. #define GD_BITS_STENCIL        72
  557. #define GD_CLIPPLANES        73
  558. #define GD_FOGVERTEX        74
  559. #define GD_LIGHTING_TWOSIDE    76
  560. #define GD_POLYMODE        77
  561. #define GD_POLYSMOOTH        78
  562. #define GD_SCRBOX        79
  563. #define GD_TEXTURE        80
  564. #define GD_FOGPIXEL        81
  565. #define GD_TEXTURE_PERSP    82
  566. #define GD_MUXPIPES        83
  567. #define GD_MULTISAMPLE        84
  568. #define GD_TEXTURE_3D        85
  569. #define GD_TEXTURE_LUT        86
  570. #define GD_TEXTURE_SHARP    87
  571. #define GD_TEXTURE_DETAIL    88
  572. #define GD_STEREO_IN_WINDOW    89
  573. #define GD_BLENDCOLOR        90
  574. #define GD_LIGHTING_SPOTLIGHT    91
  575. #define GD_LIGHTING_ATT2    92
  576. #define GD_AFUNCTION_MODES    93
  577. #define GD_TEXTURE_MEMORY_SIZE    94
  578. #define GD_IS_IGLOO        95
  579.  
  580.  
  581. /* return value for inquiries when there is no limit */
  582. #define GD_NOLIMIT        -2
  583.  
  584. /* return values for GD_WSYS */
  585. #define GD_WSYS_NONE        0
  586. #define GD_WSYS_4S        1
  587.  
  588. /* return values for GD_SCRNTYPE */
  589. #define GD_SCRNTYPE_WM        0
  590. #define GD_SCRNTYPE_NOWM    1
  591.  
  592. /* 
  593.  * END defines for getgdesc 
  594.  */
  595.  
  596.  
  597. /* 
  598.  * START NURBS interface definitions 
  599.  */
  600.  
  601. /* NURBS Rendering Properties */
  602. #define N_PIXEL_TOLERANCE     1
  603. #define N_CULLING        2
  604. #define N_DISPLAY        3
  605. #define N_ERRORCHECKING        4
  606. #define N_SUBDIVISIONS        5
  607. #define N_S_STEPS        6
  608. #define N_T_STEPS        7
  609. #define N_TILES            8
  610. #define N_TMP1            9
  611. #define N_TMP2            10
  612. #define N_TMP3            11
  613. #define N_TMP4            12
  614. #define N_TMP5            13
  615. #define N_TMP6            14
  616.  
  617. #define N_FILL            1.0
  618. #define N_OUTLINE_POLY        2.0
  619. #define N_OUTLINE_PATCH        5.0
  620. #define N_ISOLINE_S        12.0
  621.  
  622. /*---------------------------------------------------------------------------
  623.  * FLAGS FOR NURBS SURFACES AND CURVES            
  624.  * WARNING: Any changes to these flags should be checked against the 
  625.  * decoding macros in nurbs.h.
  626.  *
  627.  * Bit: 876 5432 10 
  628.  *     |ttt|nnnn|rr|   :  rr - 2 bits = 1 if rational coordinate exists
  629.  *               : nnn - 4 bits for number of coordinates
  630.  *               : ttt - 3 bits for type of data (color, position, etc.)
  631.  *    
  632.  *
  633.  * NURBS data type
  634.  * N_T_ST         0     parametric space data
  635.  * N_T_XYZ        1     model space data
  636.  * N_T_TEX        2     texture coordinate data
  637.  * N_T_RGBA        3     color data
  638.  *
  639.  * Number of coordinates per datum
  640.  * N_COORD2         2     2 coords
  641.  * N_COORD3        3     3 coords
  642.  * N_COORD4        4     4 coords
  643.  * N_COORD5        5     5 coords
  644.  *
  645.  * rational or non-rational data and position in memory 
  646.  * N_NONRATIONAL    0     non-rational data
  647.  * N_RATIONAL        1     rational data with rat coord after rest
  648.  *
  649.  * N_MKFLAG(t,n,r) ((t<<6) | (n<<2) | r)
  650.  *    
  651.  *---------------------------------------------------------------------------
  652.  */
  653. #define N_ST      0x8    /* N_MKFLAG( N_T_ST,  N_COORD2, N_NONRATIONAL ) */
  654. #define N_STW      0xd    /* N_MKFLAG( N_T_ST,  N_COORD3, N_RATIONAL )     */
  655. #define N_XYZ     0x4c    /* N_MKFLAG( N_T_XYZ, N_COORD3, N_NONRATIONAL ) */
  656. #define N_XYZW     0x51    /* N_MKFLAG( N_T_XYZ, N_COORD4, N_RATIONAL )     */
  657. #define N_TEX     0x88    /* N_MKFLAG( N_T_TEX, N_COORD2, N_NONRATIONAL ) */
  658. #define N_TEXW     0x8d    /* N_MKFLAG( N_T_TEX, N_COORD3, N_RATIONAL ) */
  659. #define N_RGBA     0xd0    /* N_MKFLAG( N_T_RGBA, N_COORD4, N_NONRATIONAL ) */
  660. #define N_RGBAW     0xd5    /* N_MKFLAG( N_T_RGBA, N_COORD5, N_RATIONAL ) */
  661.  
  662. /* New versions of above constants */
  663.  
  664. #define N_P2D     0x8    /* N_MKFLAG( N_T_ST,  N_COORD2, N_NONRATIONAL ) */
  665. #define N_P2DR     0xd    /* N_MKFLAG( N_T_ST,  N_COORD3, N_RATIONAL )     */
  666. #define N_V3D     0x4c    /* N_MKFLAG( N_T_XYZ, N_COORD3, N_NONRATIONAL ) */
  667. #define N_V3DR     0x51    /* N_MKFLAG( N_T_XYZ, N_COORD4, N_RATIONAL )     */
  668. #define N_T2D     0x88    /* N_MKFLAG( N_T_TEX, N_COORD2, N_NONRATIONAL ) */
  669. #define N_T2DR     0x8d    /* N_MKFLAG( N_T_TEX, N_COORD3, N_RATIONAL ) */
  670. #define N_C4D     0xd0    /* N_MKFLAG( N_T_RGBA, N_COORD4, N_NONRATIONAL ) */
  671. #define N_C4DR     0xd5    /* N_MKFLAG( N_T_RGBA, N_COORD5, N_RATIONAL ) */
  672.  
  673. /* 
  674.  * END NURBS interface definitions 
  675.  */
  676.  
  677.  
  678. /* 
  679.  * START lighting model defines 
  680.  */
  681.  
  682. #define LMNULL            0.0
  683.  
  684. /* MATRIX modes    */
  685. #define MSINGLE            0
  686. #define MPROJECTION        1
  687. #define MVIEWING        2
  688. #define MTEXTURE        3
  689.  
  690. /* LIGHT constants */
  691. #define MAXLIGHTS        8
  692. #define MAXRESTRICTIONS        4
  693.  
  694. /* MATERIAL properties */
  695. #define DEFMATERIAL        0
  696. #define EMISSION        1
  697. #define AMBIENT            2
  698. #define DIFFUSE            3
  699. #define SPECULAR        4
  700. #define SHININESS        5
  701. #define COLORINDEXES        6
  702. #define ALPHA            7
  703.  
  704. /* LIGHT properties */
  705. #define DEFLIGHT        100
  706. #define LCOLOR            101
  707. #define POSITION        102
  708. #define SPOTDIRECTION        103
  709. #define SPOTLIGHT        104
  710.  
  711.  
  712. /* LIGHTINGMODEL properties */
  713. #define DEFLMODEL        200
  714. #define LOCALVIEWER        201
  715. #define ATTENUATION        202
  716. #define ATTENUATION2        203
  717. #define TWOSIDE            204
  718.  
  719.  
  720. /* TARGET constants */
  721. #define MATERIAL        1000
  722. #define BACKMATERIAL        1001
  723. #define LIGHT0            1100
  724. #define LIGHT1            1101
  725. #define LIGHT2            1102
  726. #define LIGHT3            1103
  727. #define LIGHT4            1104
  728. #define LIGHT5            1105
  729. #define LIGHT6            1106
  730. #define LIGHT7            1107
  731. #define LMODEL            1200
  732.  
  733. /* lmcolor modes */
  734. #define LMC_COLOR        0
  735. #define LMC_EMISSION        1
  736. #define LMC_AMBIENT        2
  737. #define LMC_DIFFUSE        3
  738. #define LMC_SPECULAR        4
  739. #define LMC_AD            5
  740. #define LMC_NULL        6
  741.  
  742. /*
  743.  * END lighting model defines 
  744.  */
  745.  
  746.  
  747. /* 
  748.  * START texturing defines 
  749.  */
  750.  
  751. /* texdef param token values */
  752. #define TX_MINFILTER        0x100
  753. #define TX_MAGFILTER        0x200
  754. #define TX_MAGFILTER_COLOR      0xa00
  755. #define TX_MAGFILTER_ALPHA      0xb00
  756. #define TX_WRAP            0x300
  757. #define TX_WRAP_S        0x310
  758. #define TX_WRAP_T        0x320
  759. #define TX_WRAP_R        0x330
  760. #define TX_TILE            0x400
  761. #define    TX_BORDER        0x500
  762. #define TX_DETAIL               0xe00
  763. #define TX_FAST_DEFINE        0x0f00
  764. #define TX_NOCOPY                               TX_FAST_DEFINE /* obsolete */
  765. #define TX_FRAMEBUFFER_SRC                      0x1000 /* obsolete */
  766. #define TX_SUBTEXLOAD                           0x2000 /* obsolete */
  767. #define TX_FORMATTED_16bit_64x64    0x2000
  768. #define TX_FORMATTED_ABGR_8_128x128    0x2010
  769. #define TX_CONTROL_POINT        0xc00
  770. #define TX_CONTROL_CLAMP        0xd00
  771. #define TX_NULL            0x000
  772.  
  773. /* texture external formats */
  774. #define TX_EXTERNAL_FORMAT      0x700
  775. #define TX_PACK_8               0x710   /* just like STAPUFT 4.0 */
  776. #define TX_PACK_16              0x720   /* */
  777. #define TX_NOPACK_12        0x730   /* 12 bits in 12 lsb bits of short */
  778. #define TX_PIXMODE        0x3000
  779. #define    TX_BICUBIC_FILTER    0x4000    /* user bicubic kernel parameters */
  780.  
  781. #define TX_INTERNAL_FORMAT      0x600
  782. /* choices for TX_INTERNAL_FORMAT */
  783. #define TX_I_12                 0x610   /* 1-comp                      full    speed */
  784. #define TX_I_12A_4              0x610   /*        2-comp               full    speed */
  785. #define TX_I_8                  0x620   /* 1-comp                      full    speed */
  786. #define TX_IA_8                 0x620   /*        2-comp               full    speed */
  787. #define TX_RGB_5                0x630   /*               3-comp        full    speed */
  788. #define TX_RGBA_4               0x640   /*                      4-comp full    speed */
  789. #define TX_IA_12                0x650   /*        2-comp               half    speed */
  790. #define TX_RGBA_8               0x660   /*                      4-comp half    speed */
  791. #define TX_RGB_8                0x660   /*               3-comp        half    speed */
  792. #define TX_RGB_12               0x680   /*               3-comp        third   speed */
  793. #define TX_RGBA_12              0x670   /*                      4-comp quarter speed */
  794. #define TX_I_16                 0x690    /* should only be used in SHADOW mode */
  795.  
  796.  
  797. #define TX_MIPMAP_FILTER_KERNEL 0x900   /* seperable 8x8x8 filter kernel */
  798.  
  799. /* texture filter choices */
  800. #define TX_POINT        0x110
  801. #define TX_BILINEAR        0x220
  802. #define TX_MIPMAP        0x120
  803. #define TX_MIPMAP_POINT        0x121
  804. #define TX_MIPMAP_LINEAR    0x122
  805. #define TX_MIPMAP_BILINEAR    0x123
  806. #define TX_MIPMAP_TRILINEAR    0x124
  807. #define TX_BICUBIC                      0x230
  808. #define TX_SHARPEN                      0x240
  809. #define TX_MODULATE_DETAIL              0x250
  810. #define TX_ADD_DETAIL                   0x260
  811. #define TX_TRILINEAR                    0x270
  812. #define TX_MIPMAP_QUADLINEAR            0x280
  813. #define TX_BICUBIC_GEQUAL               0x290
  814. #define TX_BICUBIC_LEQUAL               0x2a0
  815. #define TX_BILINEAR_GEQUAL              0x2b0
  816. #define TX_BILINEAR_LEQUAL              0x2c0
  817.  
  818.  
  819. /* texture wrapping access choices */
  820. #define TX_REPEAT        0x301
  821. #define TX_CLAMP        0x302
  822. #define TX_SELECT        0x303
  823.  
  824. /* texture targets */
  825. #define TX_TEXTURE_0        0
  826. #define TX_TEXTURE_DETAIL       1 /* This binds a texture to the DETAIL texture resource */
  827. #define TX_TEXTURE_IDLE        2
  828.  
  829. /* texture environment definitions */
  830. #define TV_MODULATE        0x101
  831. #define TV_BLEND        0x102
  832. #define TV_DECAL        0x103
  833. #define TV_COLOR        0x200
  834. #define TV_SHADOW               0x104
  835. #define TV_ALPHA                0x105
  836. #define TV_COMPONENT_SELECT     0x300
  837. #define TV_I_GETS_R             0x310
  838. #define TV_I_GETS_G             0x320
  839. #define TV_I_GETS_B             0x330
  840. #define TV_I_GETS_A             0x340
  841. #define TV_IA_GETS_RG           0x350
  842. #define TV_IA_GETS_BA           0x360
  843. #define TV_I_GETS_I             0x370
  844. #define TV_NULL            0x000
  845.  
  846. /* texture lookup table definitions */
  847. #define TL_NULL                 0x0
  848. #define TL_TLUT_0        0
  849.  
  850. /* texture environment targets */
  851. #define TV_ENV0         0
  852.  
  853. /* defines for texgen */
  854. #define TX_S            0
  855. #define TX_T            1
  856. #define TX_R            2
  857. #define TX_Q            3
  858. #define TG_OFF            0
  859. #define TG_ON            1
  860. #define TG_CONTOUR        2
  861. #define TG_LINEAR        3
  862. #define TG_SPHEREMAP        4
  863. #define TG_REFRACTMAP        5    /* not yet approved! */
  864.  
  865. /*
  866.  * END texturing defines 
  867.  */
  868.  
  869. /* 
  870.  * START multi-byte character types for lcharstr and lstrwidth
  871.  */
  872.  
  873. #define STR_B    0x000
  874. #define STR_2B    0x001
  875. #define STR_3B    0x010
  876. #define STR_4B    0x011
  877. #define STR_16    0x100
  878. #define STR_32    0x101
  879.  
  880. /* 
  881.  * END mbcharstr defines
  882.  */
  883.  
  884. /* 
  885.  * START Distributed Graphics Library defines 
  886.  */
  887.  
  888. #define DGLSINK            0    /* sink connection    */
  889. #define DGLLOCAL        1    /* local connection    */
  890. #define DGLTSOCKET        2    /* tcp socket connection*/
  891. #define DGL4DDN            3    /* 4DDN (DECnet)    */
  892.  
  893. /* 
  894.  * END Distributed Graphics Library defines 
  895.  */
  896.  
  897.  
  898. /* 
  899.  * START obsolete defines - included for backwards compatibility 
  900.  */
  901.  
  902. #define GLDEF            __GL_GL_H__
  903.  
  904. #define PUP_CURSOR        PUP_COLOR
  905.  
  906. #define FATAL           1       /* exit from program after printing message */
  907. #define WARNING         2       /* print message and continue */
  908. #define ASK_CONT        3       /* ask if program should continue */
  909. #define ASK_RESTART     4       /* ask if program should be restarted */
  910.  
  911. /* high-resolution monitor */
  912. #define XMAXSCREEN        1279
  913. #define YMAXSCREEN        1023
  914.  
  915. /* medium-resolution monitor */
  916. #define XMAXMEDIUM        1023    
  917. #define YMAXMEDIUM        767
  918.  
  919. /* RS-170 */
  920. #define XMAX170            645    
  921. #define YMAX170            484
  922.  
  923. /* PAL */
  924. #define XMAXPAL            779    
  925. #define YMAXPAL            574
  926.  
  927. /* 
  928.  * END obsolete defines
  929.  */
  930.  
  931.  
  932. /* typedefs */
  933.  
  934. typedef unsigned char Byte;
  935. typedef long Boolean;
  936. typedef char *String;
  937. typedef void *Lstring;
  938.  
  939. typedef short Angle;
  940. typedef short Screencoord;
  941. typedef short Scoord;
  942. typedef long Icoord;
  943. typedef float Coord;
  944. typedef float Matrix[4][4];
  945.  
  946. typedef unsigned short Colorindex;
  947. typedef unsigned char RGBvalue;
  948.  
  949. typedef unsigned short Device;
  950.  
  951. typedef unsigned short Pattern16[PATTERN_16_SIZE];
  952. typedef unsigned short Pattern32[PATTERN_32_SIZE];
  953. typedef unsigned short Pattern64[PATTERN_64_SIZE];
  954.  
  955. typedef unsigned short Linestyle;
  956.  
  957. typedef struct {
  958.     unsigned long value;
  959.     unsigned long offset;
  960.     short w,h;
  961.     short xoff,yoff;
  962.     short xmove, ymove;
  963. } Lfontchar;
  964.  
  965. typedef struct {
  966.     unsigned short offset;
  967.     Byte w,h;
  968. #ifdef _LANGUAGE_C_PLUS_PLUS
  969.     char xoff,yoff;
  970. #else
  971.     signed char xoff,yoff;
  972. #endif
  973.     short width;
  974. } Fontchar;
  975.  
  976. typedef long Object;
  977. typedef long Tag;
  978. typedef long Offset;
  979.  
  980. typedef void (*__PFV_)();    /* C++ can't handle function ptr prototype */
  981.  
  982. typedef struct {
  983.     int buffer;
  984.     int mode;
  985.     int arg;
  986. } GLXconfig;
  987.  
  988. /* obsolete typedefs */
  989. #ifndef X_H
  990. typedef unsigned short Cursor[16];    /* a C16X1 cursor */
  991. #endif
  992.  
  993. extern GLXconfig *      GLXgetconfig( void *, long, GLXconfig * );
  994. extern void     acbuf( long, float );
  995. extern void     acsize( long );
  996. extern void     addtopup( long, String, ... );
  997. extern void     afunction( long, long );
  998. extern void     arc( Coord, Coord, Coord, Angle, Angle );
  999. extern void     arcf( Coord, Coord, Coord, Angle, Angle );
  1000. extern void     arcfi( Icoord, Icoord, Icoord, Angle, Angle );
  1001. extern void     arcfs( Scoord, Scoord, Scoord, Angle, Angle );
  1002. extern void     arci( Icoord, Icoord, Icoord, Angle, Angle );
  1003. extern void     arcs( Scoord, Scoord, Scoord, Angle, Angle );
  1004. extern void     attachcursor( Device, Device );
  1005. extern void     backbuffer( Boolean );
  1006. extern void     backface( Boolean );
  1007. extern void     bbox2( Screencoord, Screencoord, Coord, Coord, Coord, Coord );
  1008. extern void     bbox2i( Screencoord, Screencoord, Icoord, Icoord, Icoord, Icoord );
  1009. extern void     bbox2s( Screencoord, Screencoord, Scoord, Scoord, Scoord, Scoord );
  1010. extern void     bgnclosedline( void );
  1011. extern void     bgncurve( void );
  1012. extern void     bgnline( void );
  1013. extern void     bgnpoint( void );
  1014. extern void     bgnpolygon( void );
  1015. extern void     bgnqstrip( void );
  1016. extern void     bgnsurface( void );
  1017. extern void     bgntmesh( void );
  1018. extern void     bgntrim( void );
  1019. extern void     blankscreen( Boolean );
  1020. extern void     blanktime( long );
  1021. extern void     blendcolor( float, float, float, float );
  1022. extern void     blendfunction( long, long );
  1023. extern void     blink( short, Colorindex, short, short, short );
  1024. extern long     blkqread( short[], short );
  1025. extern void     c3f( const float[3] );
  1026. extern void     c3i( const long[3] );
  1027. extern void     c3s( const short[3] );
  1028. extern void     c4f( const float[4] );
  1029. extern void     c4i( const long[4] );
  1030. extern void     c4s( const short[4] );
  1031. extern void     callfunc( __PFV_, long, ... );          /* not recommended */
  1032. extern void     callobj( Object );
  1033. extern void     charstr( String );
  1034. extern void     chunksize( long );
  1035. extern void     circ( Coord, Coord, Coord );
  1036. extern void     circf( Coord, Coord, Coord );
  1037. extern void     circfi( Icoord, Icoord, Icoord );
  1038. extern void     circfs( Scoord, Scoord, Scoord );
  1039. extern void     circi( Icoord, Icoord, Icoord );
  1040. extern void     circs( Scoord, Scoord, Scoord );
  1041. extern void     clear( void );
  1042. extern void     clearhitcode( void );                   /* not recommended */
  1043. extern void     clipplane( long, long, const float[] );
  1044. extern void     clkoff( void );
  1045. extern void     clkon( void );
  1046. extern void     closeobj( void );
  1047. extern void     cmode( void );
  1048. extern void     cmov( Coord, Coord, Coord );
  1049. extern void     cmov2( Coord, Coord );
  1050. extern void     cmov2i( Icoord, Icoord );
  1051. extern void     cmov2s( Scoord, Scoord );
  1052. extern void     cmovi( Icoord, Icoord, Icoord );
  1053. extern void     cmovs( Scoord, Scoord, Scoord );
  1054. extern void     color( Colorindex );
  1055. extern void     colorf( float );
  1056. extern void     compactify( Object );
  1057. extern void     concave( Boolean );
  1058. extern void     convolve( long, long, long, long, const float[], float );
  1059. extern void     cpack( unsigned long );
  1060. extern void     crv( const Coord[4][3] );
  1061. extern void     crvn( long, const Coord[][3] );
  1062. extern void     curorigin( short, short, short );
  1063. extern void     cursoff( void );
  1064. extern void     curson( void );
  1065. extern void     curstype( long );
  1066. extern void     curvebasis( short );
  1067. extern void     curveit( short );
  1068. extern void     curveprecision( short );
  1069. extern void     cyclemap( short, short, short );
  1070. extern void     czclear( unsigned long, long );
  1071. extern void     dbtext( char[8] );
  1072. extern void     defbasis( short, const Matrix );
  1073. extern void     defcursor( short, const unsigned short[128] );
  1074. extern void     deflfont( short, short, const Lfontchar[], long, const unsigned short[] );
  1075. extern void     deflinestyle( short, Linestyle );
  1076. extern void     defpattern( short, short, const unsigned short[] );
  1077. extern long     defpup( String, ... );
  1078. extern void     defrasterfont( short, short, short, const Fontchar[], short, const unsigned short[] );
  1079. extern void     delobj( Object );
  1080. extern void     deltag( Tag );
  1081. extern void     depthcue( Boolean );
  1082. extern void     dglclose( long );
  1083. extern long     dglopen( String, long );
  1084. extern void     displacepolygon( float );
  1085. extern void     dither( long );
  1086. extern long     dopup( long );
  1087. extern void     doublebuffer( void );
  1088. extern void     draw( Coord, Coord, Coord );
  1089. extern void     draw2( Coord, Coord );
  1090. extern void     draw2i( Icoord, Icoord );
  1091. extern void     draw2s( Scoord, Scoord );
  1092. extern void     drawi( Icoord, Icoord, Icoord );
  1093. extern void     drawmode( long );
  1094. extern void     draws( Scoord, Scoord, Scoord );
  1095. extern void     editobj( Object );
  1096. extern void     endclosedline( void );
  1097. extern void     endcurve( void );
  1098. extern long     endfeedback( void * );
  1099. extern void     endfullscrn( void );
  1100. extern void     endline( void );
  1101. extern long     endpick( short[] );
  1102. extern void     endpoint( void );
  1103. extern void     endpolygon( void );
  1104. extern void     endpupmode( void );                     /* obsolete */
  1105. extern void     endqstrip( void );
  1106. extern long     endselect( short[] );
  1107. extern void     endsurface( void );
  1108. extern void     endtmesh( void );
  1109. extern void     endtrim( void );
  1110. extern void     fbsubtexload( long, long, long, long, float, float, float, float, unsigned long );
  1111. extern void     feedback( void *, long );
  1112. extern void     finish( void );
  1113. extern void     fogvertex( long, const float[32] );
  1114. extern void     font( short );
  1115. extern void     foreground( void );
  1116. extern void     freepup( long );
  1117. extern void     frontbuffer( Boolean );
  1118. extern void     frontface( Boolean );
  1119. extern void     fudge( long, long );
  1120. extern void     fullscrn( void );
  1121. extern void     gammaramp( const short[256], const short[256], const short[256] );
  1122. extern void     gbegin( void );                         /* not recommended */
  1123. extern void     gconfig( void );
  1124. extern Object   genobj( void );
  1125. extern Tag      gentag( void );
  1126. extern long     getbackface( void );
  1127. extern long     getbuffer( void );
  1128. extern Boolean  getbutton( Device );
  1129. extern Boolean  getcmmode( void );
  1130. extern long     getcolor( void );
  1131. extern void     getcpos( short *, short * );
  1132. extern void     getcursor( short *, Colorindex *, Colorindex *, Boolean * );
  1133. extern Boolean  getdcm( void );
  1134. extern void     getdepth( Screencoord *, Screencoord * ); /* obsolete */
  1135. extern long     getdescender( void );
  1136. extern void     getdev( long, const Device[], short[] );
  1137. extern long     getdisplaymode( void );
  1138. extern long     getdrawmode( void );
  1139. extern long     getfont( void );
  1140. extern long     getgconfig( long );
  1141. extern long     getgdesc( long );
  1142. extern void     getgpos( Coord *, Coord *, Coord *, Coord * );
  1143. extern long     getheight( void );
  1144. extern void     gethgram( unsigned long[16384] );
  1145. extern long     gethitcode( void );                     /* not recommended */
  1146. extern Boolean  getlsbackup( void );                    /* not recommended */
  1147. extern long     getlsrepeat( void );
  1148. extern long     getlstyle( void );
  1149. extern long     getlwidth( void );
  1150. extern long     getmap( void );
  1151. extern void     getmatrix( Matrix );
  1152. extern void     getmcolor( Colorindex, short *, short *, short * );
  1153. extern void     getminmax( float[8] );
  1154. extern long     getmmode( void );
  1155. extern long     getmonitor( void );
  1156. extern Boolean  getmultisample( void );
  1157. extern void     getnurbsproperty( long, float * );
  1158. extern Object   getopenobj( void );
  1159. extern void     getorigin( long *, long * );
  1160. extern long     getothermonitor( void );                /* obsolete */
  1161. extern long     getpattern( void );
  1162. extern long     getplanes( void );
  1163. extern void     getport( String );                      /* obsolete */
  1164. extern Boolean  getresetls( void );                     /* not recommended */
  1165. extern void     getscrbox( long *, long *, long *, long * );
  1166. extern void     getscrmask( Screencoord *, Screencoord *, Screencoord *, Screencoord * );
  1167. extern long     getshade( void );                       /* obsolete */
  1168. extern void     getsize( long *, long * );
  1169. extern long     getsm( void );
  1170. extern long     getvaluator( Device );
  1171. extern long     getvideo( long );
  1172. extern void     getviewport( Screencoord *, Screencoord *, Screencoord *, Screencoord * );
  1173. extern long     getwritemask( void );
  1174. extern long     getwscrn( void );
  1175. extern Boolean  getzbuffer( void );
  1176. extern void     gexit( void );
  1177. extern void     gflush( void );
  1178. extern void     ginit( void );                          /* not recommended */
  1179. extern void     glcompat( long, long );
  1180. extern long     GLXlink( void *, GLXconfig * );
  1181. extern long     GLXunlink( void *, unsigned long );
  1182. extern long     GLXwinset( void *, unsigned long );
  1183. extern void     greset( void );                         /* not recommended */
  1184. extern void     gRGBcolor( short *, short *, short * );
  1185. extern void     gRGBcursor( short *, short *, short *, short *, short *, short *, short *, Boolean * ); /* obsolete */
  1186. extern void     gRGBmask( short *, short *, short * );
  1187. extern void     gselect( short[], long );
  1188. extern void     gsync( void );
  1189. extern long     gversion( char[12] );
  1190. extern void     hgram( unsigned long, unsigned long );
  1191. extern void     iconsize( long, long );
  1192. extern void     icontitle( String );
  1193. extern long     ilbuffer( unsigned long );
  1194. extern void     ildraw( unsigned long );
  1195. extern void     imakebackground( void );
  1196. extern void     initnames( void );
  1197. extern Boolean  ismex( void );                          /* obsolete */
  1198. extern Boolean  isobj( Object );
  1199. extern Boolean  isqueued( Device );
  1200. extern Boolean  istag( Tag );
  1201. extern long     istexloaded( long, long );
  1202. extern void     keepaspect( long, long );
  1203. extern void     lampoff( Byte );                        /* not recommended */
  1204. extern void     lampon( Byte );                         /* not recommended */
  1205. extern void     lcharstr( long, Lstring );
  1206. extern void     leftbuffer( Boolean );
  1207. extern void     linesmooth( unsigned long );
  1208. extern void     linewidth( short );
  1209. extern void     linewidthf( float );
  1210. extern void     lmbind( short, short );
  1211. extern void     lmcolor( long );
  1212. extern void     lmdef( short, short, short, const float[] );
  1213. extern void     loadmatrix( const Matrix );
  1214. extern void     loadname( short );
  1215. extern void     logicop( long );
  1216. extern void     lookat( Coord, Coord, Coord, Coord, Coord, Coord, Angle );
  1217. extern long     lrectread( Screencoord, Screencoord, Screencoord, Screencoord, unsigned long[] );
  1218. extern void     lrectwrite( Screencoord, Screencoord, Screencoord, Screencoord, const unsigned long[] );
  1219. extern void     lRGBrange( short, short, short, short, short, short, long, long );
  1220. extern void     lsbackup( Boolean );                    /* not recommended */
  1221. extern void     lsetdepth( long, long );
  1222. extern void     lshaderange( Colorindex, Colorindex, long, long );
  1223. extern void     lsrepeat( long );
  1224. extern long     lstrwidth( long, Lstring );
  1225. extern void     makeobj( Object );
  1226. extern void     maketag( Tag );
  1227. extern void     mapcolor( Colorindex, short, short, short );
  1228. extern void     mapw( Object, Screencoord, Screencoord, Coord *, Coord *, Coord *, Coord *, Coord *, Coord * );
  1229. extern void     mapw2( Object, Screencoord, Screencoord, Coord *, Coord * );
  1230. extern void     maxsize( long, long );
  1231. extern void     minmax( unsigned long, unsigned long );
  1232. extern void     minsize( long, long );
  1233. extern void     mmode( short );
  1234. extern void     monobuffer( void );
  1235. extern void     move( Coord, Coord, Coord );
  1236. extern void     move2( Coord, Coord );
  1237. extern void     move2i( Icoord, Icoord );
  1238. extern void     move2s( Scoord, Scoord );
  1239. extern void     movei( Icoord, Icoord, Icoord );
  1240. extern void     moves( Scoord, Scoord, Scoord );
  1241. extern void     msalpha( long );
  1242. extern void     msmask( float, Boolean );
  1243. extern void     mspattern( long );
  1244. extern void     mssample( long );
  1245. extern void     mssize( long, long, long );
  1246. extern void     mswapbuffers( long );
  1247. extern void     multimap( void );
  1248. extern void     multisample( Boolean );
  1249. extern void     multmatrix( const Matrix );
  1250. extern void     n3f( const float[3] );
  1251. extern long     newpup( void );
  1252. extern void     newtag( Tag, Tag, Offset );
  1253. extern void     nmode( long );
  1254. extern void     noborder( void );
  1255. extern void     noise( Device, short );
  1256. extern void     noport( void );
  1257. extern void     normal( const Coord[3] );               /* obsolete */
  1258. extern void     nurbscurve( long, const double[], long, const double[], long, long );
  1259. extern void     nurbssurface( long, const double[], long, const double[], long, long, const double[], long, long, long );
  1260. extern void     objdelete( Tag, Tag );
  1261. extern void     objinsert( Tag );
  1262. extern void     objreplace( Tag );
  1263. extern void     onemap( void );
  1264. extern void     ortho( Coord, Coord, Coord, Coord, Coord, Coord );
  1265. extern void     ortho2( Coord, Coord, Coord, Coord );
  1266. extern void     overlay( long );
  1267. extern void     pagecolor( Colorindex );                /* not recommended */
  1268. extern void     passthrough( short );
  1269. extern void     patch( const Matrix, const Matrix, const Matrix );
  1270. extern void     patchbasis( long, long );
  1271. extern void     patchcurves( long, long );
  1272. extern void     patchprecision( long, long );
  1273. extern void     pclos( void );
  1274. extern void     pdr( Coord, Coord, Coord );
  1275. extern void     pdr2( Coord, Coord );
  1276. extern void     pdr2i( Icoord, Icoord );
  1277. extern void     pdr2s( Scoord, Scoord );
  1278. extern void     pdri( Icoord, Icoord, Icoord );
  1279. extern void     pdrs( Scoord, Scoord, Scoord );
  1280. extern void     perspective( Angle, float, Coord, Coord );
  1281. extern void     pick( short[], long );
  1282. extern void     picksize( short, short );
  1283. extern void     pixelmap( long, long, unsigned short[16384] );
  1284. extern void     pixeltransfer( long, float );
  1285. extern void     pixmode( long, long );
  1286. extern void     pixmodef( long, float );
  1287. extern void     pmv( Coord, Coord, Coord );
  1288. extern void     pmv2( Coord, Coord );
  1289. extern void     pmv2i( Icoord, Icoord );
  1290. extern void     pmv2s( Scoord, Scoord );
  1291. extern void     pmvi( Icoord, Icoord, Icoord );
  1292. extern void     pmvs( Scoord, Scoord, Scoord );
  1293. extern void     pnt( Coord, Coord, Coord );
  1294. extern void     pnt2( Coord, Coord );
  1295. extern void     pnt2i( Icoord, Icoord );
  1296. extern void     pnt2s( Scoord, Scoord );
  1297. extern void     pnti( Icoord, Icoord, Icoord );
  1298. extern void     pnts( Scoord, Scoord, Scoord );
  1299. extern void     pntsize( short );
  1300. extern void     pntsizef( float );
  1301. extern void     pntsmooth( unsigned long );
  1302. extern void     polarview( Coord, Angle, Angle, Angle );
  1303. extern void     polf( long, const Coord[][3] );
  1304. extern void     polf2( long, const Coord[][2] );
  1305. extern void     polf2i( long, const Icoord[][2] );
  1306. extern void     polf2s( long, const Scoord[][2] );
  1307. extern void     polfi( long, const Icoord[][3] );
  1308. extern void     polfs( long, const Scoord[][3] );
  1309. extern void     poly( long, const Coord[][3] );
  1310. extern void     poly2( long, const Coord[][2] );
  1311. extern void     poly2i( long, const Icoord[][2] );
  1312. extern void     poly2s( long, const Scoord[][2] );
  1313. extern void     polyi( long, const Icoord[][3] );
  1314. extern void     polymode( long );
  1315. extern void     polys( long, const Scoord[][3] );
  1316. extern void     polysmooth( long );
  1317. extern void     popattributes( void );
  1318. extern void     popmatrix( void );
  1319. extern void     popname( void );
  1320. extern void     popviewport( void );
  1321. extern void     prefposition( long, long, long, long );
  1322. extern void     prefsize( long, long );
  1323. extern void     pupmode( void );                        /* obsolete */
  1324. extern void     pushattributes( void );
  1325. extern void     pushmatrix( void );
  1326. extern void     pushname( short );
  1327. extern void     pushviewport( void );
  1328. extern void     pwlcurve( long, const double[], long, long );
  1329. extern long     qcontrol( long, long, const short[], long, short[] );
  1330. extern void     qdevice( Device );
  1331. extern void     qenter( Device, short );
  1332. extern long     qgetfd( void );
  1333. extern long     qread( short * );
  1334. extern void     qreset( void );
  1335. extern long     qtest( void );
  1336. extern void     rcrv( const Coord[4][4] );
  1337. extern void     rcrvn( long, const Coord[][4] );
  1338. extern void     rdr( Coord, Coord, Coord );
  1339. extern void     rdr2( Coord, Coord );
  1340. extern void     rdr2i( Icoord, Icoord );
  1341. extern void     rdr2s( Scoord, Scoord );
  1342. extern void     rdri( Icoord, Icoord, Icoord );
  1343. extern void     rdrs( Scoord, Scoord, Scoord );
  1344. extern void     readcomponent( long );
  1345. extern long     readdisplay( Screencoord, Screencoord, Screencoord, Screencoord, unsigned long[], unsigned long );
  1346. extern long     readpixels( short, Colorindex[] );
  1347. extern long     readRGB( short, RGBvalue[], RGBvalue[], RGBvalue[] );
  1348. extern void     readsource( long );
  1349. extern void     rect( Coord, Coord, Coord, Coord );
  1350. extern void     rectcopy( Screencoord, Screencoord, Screencoord, Screencoord, Screencoord, Screencoord );
  1351. extern void     rectf( Coord, Coord, Coord, Coord );
  1352. extern void     rectfi( Icoord, Icoord, Icoord, Icoord );
  1353. extern void     rectfs( Scoord, Scoord, Scoord, Scoord );
  1354. extern void     recti( Icoord, Icoord, Icoord, Icoord );
  1355. extern long     rectread( Screencoord, Screencoord, Screencoord, Screencoord, Colorindex[] );
  1356. extern void     rects( Scoord, Scoord, Scoord, Scoord );
  1357. extern void     rectwrite( Screencoord, Screencoord, Screencoord, Screencoord, const Colorindex[] );
  1358. extern void     rectzoom( float, float );
  1359. extern void     resetls( Boolean );                     /* not recommended */
  1360. extern void     reshapeviewport( void );
  1361. extern void     RGBcolor( short, short, short );
  1362. extern void     RGBcursor( short, short, short, short, short, short, short ); /* obsolete */
  1363. extern void     RGBmode( void );
  1364. extern void     RGBrange( short, short, short, short, short, short, Screencoord, Screencoord ); /* obsolete */
  1365. extern void     RGBsize( unsigned long );
  1366. extern void     RGBwritemask( short, short, short );
  1367. extern void     rightbuffer( Boolean );
  1368. extern void     ringbell( void );
  1369. extern void     rmv( Coord, Coord, Coord );
  1370. extern void     rmv2( Coord, Coord );
  1371. extern void     rmv2i( Icoord, Icoord );
  1372. extern void     rmv2s( Scoord, Scoord );
  1373. extern void     rmvi( Icoord, Icoord, Icoord );
  1374. extern void     rmvs( Scoord, Scoord, Scoord );
  1375. extern void     rot( float, char );
  1376. extern void     rotate( Angle, char );
  1377. extern void     rpatch( const Matrix, const Matrix, const Matrix, const Matrix );
  1378. extern void     rpdr( Coord, Coord, Coord );
  1379. extern void     rpdr2( Coord, Coord );
  1380. extern void     rpdr2i( Icoord, Icoord );
  1381. extern void     rpdr2s( Scoord, Scoord );
  1382. extern void     rpdri( Icoord, Icoord, Icoord );
  1383. extern void     rpdrs( Scoord, Scoord, Scoord );
  1384. extern void     rpmv( Coord, Coord, Coord );
  1385. extern void     rpmv2( Coord, Coord );
  1386. extern void     rpmv2i( Icoord, Icoord );
  1387. extern void     rpmv2s( Scoord, Scoord );
  1388. extern void     rpmvi( Icoord, Icoord, Icoord );
  1389. extern void     rpmvs( Scoord, Scoord, Scoord );
  1390. extern void     sbox( Coord, Coord, Coord, Coord );
  1391. extern void     sboxf( Coord, Coord, Coord, Coord );
  1392. extern void     sboxfi( Icoord, Icoord, Icoord, Icoord );
  1393. extern void     sboxfs( Scoord, Scoord, Scoord, Scoord );
  1394. extern void     sboxi( Icoord, Icoord, Icoord, Icoord );
  1395. extern void     sboxs( Scoord, Scoord, Scoord, Scoord );
  1396. extern void     scale( float, float, float );
  1397. extern void     sclear( unsigned long );
  1398. extern void     scrbox( long );
  1399. extern void     screenspace( void );
  1400. extern void     scrmask( Screencoord, Screencoord, Screencoord, Screencoord );
  1401. extern long     scrnattach( long );
  1402. extern long     scrnselect( long );
  1403. extern void     scrsubdivide( long, const float[] );
  1404. extern void     setbell( Byte );
  1405. extern void     setcursor( short, Colorindex, Colorindex );
  1406. extern void     setdblights( unsigned long );
  1407. extern void     setdepth( Screencoord, Screencoord );   /* obsolete */
  1408. extern void     setlinestyle( short );
  1409. extern void     setmap( short );
  1410. extern void     setmonitor( short );
  1411. extern void     setnurbsproperty( long, float );
  1412. extern void     setpattern( short );
  1413. extern void     setpup( long, long, unsigned long );
  1414. extern void     setshade( Colorindex );
  1415. extern void     setvaluator( Device, short, short, short );
  1416. extern void     setvideo( long, long );
  1417. extern void     shademodel( long );
  1418. extern void     shaderange( Colorindex, Colorindex, Screencoord, Screencoord ); /* obsolete */
  1419. extern void     singlebuffer( void );
  1420. extern void     smoothline( long );                     /* obsolete */
  1421. extern void     spclos( void );                         /* obsolete */
  1422. extern void     splf( long, const Coord[][3], const Colorindex[] );
  1423. extern void     splf2( long, const Coord[][2], const Colorindex[] );
  1424. extern void     splf2i( long, const Icoord[][2], const Colorindex[] );
  1425. extern void     splf2s( long, const Scoord[][2], const Colorindex[] );
  1426. extern void     splfi( long, const Icoord[][3], const Colorindex[] );
  1427. extern void     splfs( long, const Scoord[][3], const Colorindex[] );
  1428. extern void     stencil( long, unsigned long, long, unsigned long, long, long, long );
  1429. extern void     stensize( long );
  1430. extern void     stepunit( long, long );
  1431. extern void     stereobuffer( void );
  1432. extern long     strwidth( String );
  1433. extern void     subpixel( Boolean );
  1434. extern void     subtexload( long, long, float, float, float, float, long, const unsigned long[], unsigned long );
  1435. extern void     swapbuffers( void );
  1436. extern void     swapinterval( short );
  1437. extern void     swaptmesh( void );
  1438. extern long     swinopen( long );
  1439. extern void     swritemask( unsigned long );
  1440. extern void     t2d( const double[2] );
  1441. extern void     t2f( const float[2] );
  1442. extern void     t2i( const long[2] );
  1443. extern void     t2s( const short[2] );
  1444. extern void     t3d( const double[3] );
  1445. extern void     t3f( const float[3] );
  1446. extern void     t3i( const long[3] );
  1447. extern void     t3s( const short[3] );
  1448. extern void     t4d( const double[4] );
  1449. extern void     t4f( const float[4] );
  1450. extern void     t4i( const long[4] );
  1451. extern void     t4s( const short[4] );
  1452. extern void     tevbind( long, long );
  1453. extern void     tevdef( long, long, const float[] );
  1454. extern void     texbind( long, long );
  1455. extern void     texdef2d( long, long, long, long, const unsigned long[], long, const float[] );
  1456. extern void     texdef3d( long, long, long, long, long, const unsigned long[], long, const float[] );
  1457. extern void     texgen( long, long, const float[] );
  1458. extern void     textcolor( Colorindex );                /* not recommended */
  1459. extern void     textinit( void );                       /* not recommended */
  1460. extern void     textport( Screencoord, Screencoord, Screencoord, Screencoord ); /* not recommended */
  1461. extern void     tie( Device, Device, Device );
  1462. extern void     tlutbind( long, long );
  1463. extern void     tlutdef( long, long, long, const unsigned long[], long, const float[] );
  1464. extern void     tpoff( void );                          /* not recommended */
  1465. extern void     tpon( void );                           /* not recommended */
  1466. extern void     translate( Coord, Coord, Coord );
  1467. extern void     underlay( long );
  1468. extern void     unqdevice( Device );
  1469. extern void     v2d( const double[2] );
  1470. extern void     v2f( const float[2] );
  1471. extern void     v2i( const long[2] );
  1472. extern void     v2s( const short[2] );
  1473. extern void     v3d( const double[3] );
  1474. extern void     v3f( const float[3] );
  1475. extern void     v3i( const long[3] );
  1476. extern void     v3s( const short[3] );
  1477. extern void     v4d( const double[4] );
  1478. extern void     v4f( const float[4] );
  1479. extern void     v4i( const long[4] );
  1480. extern void     v4s( const short[4] );
  1481. extern void     videocmd( long );
  1482. extern void     viewport( Screencoord, Screencoord, Screencoord, Screencoord );
  1483. extern long     winattach( void );                      /* obsolete */
  1484. extern void     winclose( long );
  1485. extern void     winconstraints( void );
  1486. extern long     windepth( long );
  1487. extern void     window( Coord, Coord, Coord, Coord, Coord, Coord );
  1488. extern long     winget( void );
  1489. extern void     winmove( long, long );
  1490. extern long     winopen( String );
  1491. extern void     winpop( void );
  1492. extern void     winposition( long, long, long, long );
  1493. extern void     winpush( void );
  1494. extern void     winset( long );
  1495. extern void     wintitle( String );
  1496. extern void     wmpack( unsigned long );
  1497. extern void     writemask( Colorindex );
  1498. extern void     writepixels( short, const Colorindex[] );
  1499. extern void     writeRGB( short, const RGBvalue[], const RGBvalue[], const RGBvalue[] );
  1500. extern void     xfpt( Coord, Coord, Coord );            /* not recommended */
  1501. extern void     xfpt2( Coord, Coord );                  /* not recommended */
  1502. extern void     xfpt2i( Icoord, Icoord );               /* not recommended */
  1503. extern void     xfpt2s( Scoord, Scoord );               /* not recommended */
  1504. extern void     xfpt4( Coord, Coord, Coord, Coord );    /* not recommended */
  1505. extern void     xfpt4i( Icoord, Icoord, Icoord, Icoord ); /* not recommended */
  1506. extern void     xfpt4s( Scoord, Scoord, Scoord, Scoord ); /* not recommended */
  1507. extern void     xfpti( Icoord, Icoord, Icoord );        /* not recommended */
  1508. extern void     xfpts( Scoord, Scoord, Scoord );        /* not recommended */
  1509. extern void     zbsize( long );
  1510. extern void     zbuffer( Boolean );
  1511. extern void     zclear( void );
  1512. extern void     zdraw( Boolean );
  1513. extern void     zfunction( long );
  1514. extern void     zsource( long );                        /* not recommended */
  1515. extern void     zwritemask( unsigned long );
  1516. /*
  1517.  * Workarounds for collisions with X header files.  gl.h contains
  1518.  * two copies of this, once to define and once to undef
  1519.  */
  1520.  
  1521. #ifdef _GL_UNDEF_TYPES
  1522.  
  1523. /* this is the second time, remove my ugliness */
  1524. #undef String
  1525. #undef Boolean
  1526. #undef Object
  1527.  
  1528. #else
  1529.  
  1530. /* this is the first time, create the ugliness */
  1531. #ifdef _XtIntrinsic_h
  1532. #define String GL_String
  1533. #define Boolean GL_Boolean
  1534. #endif
  1535.  
  1536. #ifdef _XtObject_h
  1537. #define Object GL_Object
  1538. #endif
  1539.  
  1540. #define _GL_UNDEF_TYPES
  1541.  
  1542. #endif
  1543. #ifdef __cplusplus
  1544. }
  1545. #endif
  1546. #endif /* !__GL_GL_H__ */
  1547.